home *** CD-ROM | disk | FTP | other *** search
- REM Morse Sender by Mark Aaker, NT6G Copyright 1984
- REM modified from Morse Code Practice by Larry Jones, W0AY
- PRINT
- PRINT "Morse Sender:"
- PRINT "I'll send groups of 5 characters selected at random."
- PRINT "Please wait while I get set up. . ."
-
- REM Set up Waveform
- DIM A%(260)
- FOR I% = -127 TO 128
- LET A%(I% +127) = INT(80*(ATN(I%)))
- NEXT I%
- WAVE 1, A%
-
- REM Set up sound defaults
- freq = 600
- dur = 2.2
- volume = 255
-
- REM Set up other default variables
- RANDOMIZE TIMER
-
- REM Read letter and morse equivalent data from 8x5 table
- FOR I= 1 TO 8
- FOR J= 1 TO 5
- READ LTR$(I,J), MRSE$(I,J)
- NEXT J
- NEXT I
-
- DATA 5,IIIII,0,AAAAA,E,I,T,A,A,IA
- DATA S,III,L,IAII,U,IIA,Q,AAIA,J,IAAA
- DATA H,IIII,O,AAA,N,AI,C,AIAI,V,IIIA
- DATA I,II,B,AIII,Y,AIAA,P,IAAI,R,IAI
- DATA W,IAA,K,AIA,Z,AAII,M,AA,D,AII
- DATA X,AIIA,F,IIAI,G,AAI,",",AAIIAA,.,IAIAIA
- DATA 1,IAAAA,2,IIAAA,3,IIIAA,4,IIIIA,/,AIIAI
- DATA 6,AIIII,7,AAIII,8,AAAII,9,AAAAI,?,IIAAII
-
- REM Get user input
- getinput:
- PRINT
- PRINT "Enter zero to quit."
- INPUT "How many minutes shall I send "; minutes
- IF (minutes = 0) THEN GOTO ending
- INPUT "At what words per minute speed "; wpm
- IF (wpm = 0) THEN GOTO ending
- PRINT " "
- REM calculate Number of Letters to send
- REM 5/6 adjusts since random letter groups are longer than English text
- NL = minutes * wpm * 5! * 5!/6!
- REM Fudge * Macdur * random group speed
- dur = .933 * 18.2 * 1!/ wpm
-
- REM reset counters
- lcount = 0
- wcount = 1
-
- REM Start sound gen. to get past starting click
- REM and wait for disk to stop
- SOUND 0, 77, 0, 1
- SOUND 0, 77, 0, 1
-
- start:
- REM For each Letter to Send
- FOR LS= 1 TO NL
-
- REM Randomly pick a letter out of 8x5 table
- I= 1 + INT(RND(1) * 8)
- J= 1 + INT(RND(1) * 5)
-
- REM Check if 6th letter, send word space first
- lcount = lcount + 1
- IF (lcount < 6) THEN GOTO Send
- GOSUB wspace
- PRINT " ";
- lcount = 1
- wcount = wcount + 1
- REM Check if 6th word, send return first
- IF (wcount < 6) THEN GOTO Send
- PRINT " "
- wcount = 1
-
- REM Send all morse elements of the letter, Dit or Dah
- Send:
- FOR DOD = 1 TO LEN(MRSE$(I,J))
- IF MID$(MRSE$(I,J),DOD,1) = "I" THEN GOSUB dit
- IF MID$(MRSE$(I,J),DOD,1) = "A" THEN GOSUB dah
- NEXT DOD
-
- REM Send a letter space after the letter
- GOSUB lspace
-
- REM print the letter
- PRINT LTR$(I, J);
-
- REM Loop for next letter
- NEXT LS
-
- REM All letters sent, send space
- SOUND 0, 77, 0, 1
-
- REM waste time so disk won't start till sound done
- FOR k = 1 TO 2047
- NEXT k
-
- GOTO getinput
-
- ending:
- SYSTEM
- END
-
- REM Subroutine dit
- dit:
- SOUND freq, dur, volume, 1
- SOUND 0, dur, 0, 1
- RETURN
-
- REM Subroutine dah
- dah:
- SOUND freq, 3*dur, volume, 1
- SOUND 0, dur, 0, 1
- RETURN
-
- REM Subroutine letter space
- lspace:
- SOUND 0, 3 * dur, 0, 1
- RETURN
-
- REM Subroutine word space
- wspace:
- SOUND 0, 7 * dur, 0, 1
- RETURN
-
-